Messaging is a method of communication between software components or applications. A messaging system provides for the communication such that a messaging client can send messages to, and receive messages from, any other client. Each client connects to a messaging agent that provides facilities for creating, sending, receiving, and reading messages.
Many messaging systems exist as part of a set of published enterprise-wide standards known as Enterprise Messaging System (EMS). EMS systems are a set of published enterprise-wide standards that allows organizations to send messages between computer systems. An example of a specific application programming interface (API) that implements an EMS system is the Java message service (JMS). JMS allows applications to create, send, receive, and read messages.
The messaging systems that are created in the EMS system are very complex as the developers not only have to cope with the Enterprise standards but also create a stable, scalable and low maintenance messaging system. Although JMS is an API, it encounters many similar issues as those involved in setting up a full EMS.